Skip to content

ci: move required builds to Linux and preserve runtime hybrid - #331

Merged
blakinio merged 9 commits into
mainfrom
ci/OTC-20260816-linux-ci-hybrid
Aug 16, 2026
Merged

ci: move required builds to Linux and preserve runtime hybrid#331
blakinio merged 9 commits into
mainfrom
ci/OTC-20260816-linux-ci-hybrid

Conversation

@blakinio

@blakinio blakinio commented Aug 16, 2026

Copy link
Copy Markdown
Owner

Objective

Make ordinary OTClient CI Linux-only on GitHub-hosted runners, including a bounded headless startup smoke of the built Linux client, while preserving Synology/self-hosted capacity for specialized real runtime/LAN/display/input/persistent-session work.

Changes

  • replace the required Windows build gate with the existing reusable-build-linux.yml matrix;
  • remove reusable-build-windows.yml;
  • add a required GitHub-hosted Client Startup Smoke - Linux job after the Linux build;
  • download the real linux-linux-release artifact, verify shared-library resolution, and start otclient under Xvfb with software GL, null OpenAL output, and an isolated --user-dir;
  • require the client to remain alive for a bounded 20-second startup window and upload dependency/startup logs as evidence;
  • carry forward safe path-scope optimization so docs/task-only PRs do not allocate unrelated Fast Checks/Lua/build/smoke runners;
  • make pull_request.closed create a no-work run in the same CI concurrency group, so a closed/superseded PR cancels any older in-progress build instead of leaving orphaned runner demand;
  • stop automatically retrying intentionally cancelled superseded CI runs;
  • leave dedicated Synology/runtime workflow files untouched.

Runner boundary

GitHub-hosted: static/workflow/Lua validation, unit/integration tests, Linux build, artifact dependency validation, bounded headless startup smoke.

Synology/self-hosted: persistent OTClient session, real display/input ownership, login/walking/clicking, LAN/runtime integration, long-lived observation and direct physical gameplay evidence.

The GitHub headless smoke must not be treated as a replacement for Synology physical runtime E2E.

Coordination

Validation contract

  • workflow syntax/actionlint must pass;
  • both Linux build matrix jobs must pass on GitHub-hosted Ubuntu;
  • the exact-head startup-smoke job must execute the real release artifact and survive the bounded virtual-display startup window;
  • CI / Required must require both build and startup smoke when compile scope is true;
  • no Windows build job may be emitted;
  • closed-PR events must skip ordinary jobs while sharing the PR concurrency key;
  • Synology runtime workflows remain outside this changed-file set.

The pinned vcpkg baseline's x64-linux triplet links vcpkg libraries statically, so the downloaded release artifact does not require a second vcpkg installation on the smoke runner; only system X/GL/OpenAL runtime packages are installed there.

Task: OTC-20260816-linux-ci-hybrid.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

Copy link
Copy Markdown
Owner Author

Fresh exact-head audit on db6e4357e1d51d112c306248fcdebd5ef1127397:

  • changed-file set is limited to .github/workflows/ci.yml, .github/workflows/infrastructure-retry.yml, removal of .github/workflows/reusable-build-windows.yml, and the task record;
  • general CI now references reusable-build-linux.yml; the accepted Actions graph references checks, Lua, and Linux reusable workflows only;
  • reusable-build-linux.yml uses GitHub-hosted ubuntu-24.04 with linux-tests and linux-release matrix entries;
  • exact-head observed jobs use runner_group_name: GitHub Actions; Linux build jobs are running in parallel on ubuntu-24.04;
  • PR ci: add dedicated OTClient and OTS runner stack #280 Synology/runtime paths are not in this diff; ci: reduce hosted-runner queue amplification #328 is intentionally closed superseded;
  • yamllint, actionlint, XML validation, Lua syntax, and informational static analysis have passed so far.

No material audit finding identified. Final acceptance still requires both Linux matrix jobs and CI / Required to succeed on this exact head before merge.

@blakinio blakinio added the programme:infrastructure Infrastructure programme label Aug 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

programme:infrastructure Infrastructure programme

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant